


#ifndef __SOFT_SCCB__H__
#define __SOFT_SCCB__H__



#include"mcu_.h"

/// <summary>
/// io口的结构体，sccb协议在摄像头模块，如ov7670，ov7725上面有用到
/// </summary>
typedef struct _sccb_device__
{
	// int io;  // 引脚号
	unt8 SCCB_ID;     //OV7670,7725 的ID:0X42
	gpio* sda;
	gpio* scl;
}SCCBdevice;




////////////////// 下面的引脚操作接口用户定义。

/// <summary>
/// SCCB scl 引脚设置高电平
/// </summary>
/// <param name="device">SCCB 设备</param>
void SCCB_SCL_H(SCCBdevice* device);
/// <summary>
/// SCCB scl 引脚设置低电平
/// </summary>
/// <param name="device">SCCB 设备</param>
void SCCB_SCL_L(SCCBdevice* device);
/// <summary>
/// SCCB sda 引脚设置高电平
/// </summary>
/// <param name="device">SCCB 设备</param>
void SCCB_SDA_H(SCCBdevice* device);
/// <summary>
/// SCCB sda 引脚设置低电平
/// </summary>
/// <param name="device">SCCB 设备</param>
void SCCB_SDA_L(SCCBdevice* device);
/// <summary>
/// 读取SCCB sda 引脚电平
/// </summary>
/// <param name="device">SCCB 设备</param>
/// <returns>0低电平，1高电平</returns>
int SCCB_SDA_READ(SCCBdevice* device);

/// <summary>
/// SDA引脚设置输出模式
/// </summary>
/// <param name="device">SCCB 设备</param>
void Soft_SCCB_Output(SCCBdevice* device);

/// <summary>
/// SDA引脚设置输入模式
/// </summary>
/// <param name="device">SCCB 设备</param>
void Soft_SCCB_Input(SCCBdevice* device);
//

////////////  上面是硬件接口  ////////////////////////////////




//初始化SCCB接口
//CHECK OK
void SCCB_Init(SCCBdevice* device);
//SCCB起始信号
//当时钟为高的时候,数据线的高到低,为SCCB起始信号
//在激活状态下,SDA和SCL均为低电平
void SCCB_Start(SCCBdevice* device);
//SCCB停止信号
//当时钟为高的时候,数据线的低到高,为SCCB停止信号
//空闲状况下,SDA,SCL均为高电平
void SCCB_Stop(SCCBdevice* device);
//产生NA信号
void SCCB_No_Ack(SCCBdevice* device);
//SCCB,写入一个字节
//返回值:0,成功;1,失败. 
unt8 SCCB_WR_Byte(SCCBdevice* device, unt8 dat);
//SCCB 读取一个字节
//在SCL的上升沿,数据锁存
//返回值:读到的数据
unt8 SCCB_RD_Byte(SCCBdevice* device);
//写寄存器
//返回值:0,成功;1,失败.
unt8 SCCB_WR_Reg(SCCBdevice* device, unt8 reg, unt8 data);
//读寄存器
//返回值:读到的寄存器值
unt8 SCCB_RD_Reg(SCCBdevice* device, unt8 reg);








#endif





